package com.yuexun.beilunpatient.ui.registration.api;

import com.yuexun.beilunpatient.base.BaseEntity;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentArrageBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDepBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDepData;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDepInfoBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDocBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentDocInfoBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentHistoryBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentHistoryDetailBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentHospitalBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentLoginBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentPatientDetail;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentPayBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentSubmitBean;
import com.yuexun.beilunpatient.ui.registration.bean.AppointmentTimeSlotBean;

import java.util.Map;

import retrofit.http.FieldMap;
import retrofit.http.FormUrlEncoded;
import retrofit.http.POST;
import rx.Observable;

/**
 * Created by chenss on 2018/10/18.
 */
public interface RegistrationApi {

    //预约挂号会员登陆
    @FormUrlEncoded
    @POST("appointmentYXLogin.json")
    Observable<BaseEntity<AppointmentLoginBean>> appointmentLogin(@FieldMap Map<String, String> praise);

    //预约挂号会员注册
    @FormUrlEncoded
    @POST("appointmentRegister.json")
    Observable<BaseEntity<String>> appointmentRegister(@FieldMap Map<String, String> praise);

    //请求激活码
    @FormUrlEncoded
    @POST("sendActiCode.json")
    Observable<BaseEntity<String>> sendActiveCodeNoPassWord(@FieldMap Map<String, String> praise);

    //会员激活
    @FormUrlEncoded
    @POST("appointmentActivation.json")
    Observable<BaseEntity<String>> appointmentActivationNoPassword(@FieldMap Map<String, String> praise);

    //预约挂号获取所有或可预约的医院列表
    @FormUrlEncoded
    @POST("appointmenthospitalList.json")
    Observable<BaseEntity<AppointmentHospitalBean>> appointmenthospitalList(@FieldMap Map<String, String> praise);

    //获取科室列表
    @FormUrlEncoded
    @POST("getAppointentDep.json")
    Observable<BaseEntity<AppointmentDepData>> getAppointentDep(@FieldMap Map<String, String> praise);

    //获取科室列表SG0003中心科室
    @FormUrlEncoded
    @POST("getAppointentDepCenter.json")
    Observable<BaseEntity<AppointmentDepBean>> getAppointentDepCenter(@FieldMap Map<String, String> praise);

    //获取挂号医生列表
    @FormUrlEncoded
    @POST("getAppointmentDocList.json")
    Observable<BaseEntity<AppointmentDocBean>> getAppointmentDocList(@FieldMap Map<String, String> praise);

    //(SG0004)获取医院科室简介
    @FormUrlEncoded
    @POST("getAppointmentDepinfo.json")
    Observable<BaseEntity<AppointmentDepInfoBean>> getAppointmentDepinfo(@FieldMap Map<String, String> praise);

    //获取平台挂号排班信息
    @FormUrlEncoded
    @POST("getAppointmentArrageList.json")
    Observable<BaseEntity<AppointmentArrageBean>> getAppointmentArrageList(@FieldMap Map<String, String> praise);

    //获取医生详细信息
    @FormUrlEncoded
    @POST("getAppointmentDocInfo.json")
    Observable<BaseEntity<AppointmentDocInfoBean>> getAppointmentDocInfo(@FieldMap Map<String, String> praise);

    //获取预约时间段
    @FormUrlEncoded
    @POST("getAppointmentTimeSlot.json")
    Observable<BaseEntity<AppointmentTimeSlotBean>> getAppointmentTimeSlot(@FieldMap Map<String, String> praise);

    //预约挂号
    @FormUrlEncoded
    @POST("toAppointment.json")
    Observable<BaseEntity<AppointmentSubmitBean>> toAppointment(@FieldMap Map<String, String> praise);

    //查询已预约的记录
    @FormUrlEncoded
    @POST("getAlreadyAppointmentList.json")
    Observable<BaseEntity<AppointmentHistoryBean>> getAlreadyAppointmentList(@FieldMap Map<String, String> praise);

    //预约退号
    @FormUrlEncoded
    @POST("cancelAppoinment.json")
    Observable<BaseEntity<String>> cancelAppoinment(@FieldMap Map<String, String> praise);

    //开始预约费用的支付
    @FormUrlEncoded
    @POST("toPayAppoinment.json")
    Observable<BaseEntity<AppointmentPayBean>> toPayAppoinment(@FieldMap Map<String, String> praise);

    //获取单个已预约记录的信息
    @FormUrlEncoded
    @POST("getAppointentDetail.json")
    Observable<BaseEntity<AppointmentHistoryDetailBean>> getAppointentDetail(@FieldMap Map<String, String> praise);

    //获取病人详情
    @FormUrlEncoded
    @POST("loadPatientInfoDetail.json")
    Observable<BaseEntity<AppointmentPatientDetail>> loadPatientInfoDetail(@FieldMap Map<String, String> praise);
}
